文章目录
  1. 1. 2.6复习以及编程练习
  2. 2. C++primer里的问题

never eat alone

  1. 口头问题?
    // mark

  • 继承跟覆盖的区别??
  1. 在read、write前要写polling

  2. 析构函数?
    构造函数和析构函数分别用于对象的初始化和释放,当对象生成或终止时由系统自动调用。

  3. 构造函数?
    每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫作构造函数(constructor)

  4. exit(0);类里函数结尾有这个,会直接退出程序不再执行下一个类的成员函数?

正常运行程序并退出程序;

  1. C++中类成员函数 中可以调用其他成员函数吗?如果可以怎么操作呢?
    答:可以,使用时: 类名::函数名即可

  2. 回调、跑线程、调度、GUI、主控有2个回调(函数)

C++primer Plus(第6版)课后练习题

2.6复习以及编程练习

1.C++程序的模块叫什么?

答:
他们叫作函数

  1. 下面的预处理编译器指定是做是用的?
    1
    #include<iostream>

答:
这将导致在最终编译之前,使用iostream文件的内容替该编译指令

  1. 下面的语句是做什么用的?
    1
    using namespace std;

答:
它使得可以使用std名称空间中的定义

  1. 什么语句可以用来打印短剧”Hello,world然后开始新的一行?

答:

1
cout <<"Hello,world"<<endl;

或者

1
cout <<"Hello,world\n";
  1. 什么语句可以用来创建名为chesses的整数变量?
    答:
    1
    int cheeses;
  2. 什么语句可以用来将值32赋给变量cheeses?

答:

1
int cheeses=32;
  1. 什么语句可以用来将从键盘输入的值读入变量cheeses中?

答:

1
cin>>cheeses;
  1. 什么语句可以用来打印”We have X varieties of cheese,”,其中X为变量cheeses的当前值。
    答:

    1
    cout <<"We have" <<chesses<<"varieties of chess\n";
  2. 下面函数原型指出了关于函数的哪些信息?

    1
    2
    3
    int frop(double t);
    void rattle(int n);
    int prune(void);

    答:
    包含了函数:返回值类型 函数名 参数类型

  3. 定义函数时,在什么情况下不必使用关键字return ?

答:
无返回值类型

  1. 架设您编写的main()函数包含了如下代码:
    1
    cout <<"Please enter your PIN";
    答:
    很可能没有包含域名空间代码;

修复方法

1.
在main函数外面填写

1
using namesppace std;
  1. 在main函数里中使用

    1
    using std::cout;
  2. 在需要使用名称空间std中的元素使用前缀std:: 如

    1
    std::cout<<"I'm using cout and endl from the std namespace"<<std::endl;
  3. unsigned char data[10] ;

unsigned char data2[10];

与unsigned char *data[10] ;
的区别

区别就是unsigned char *data[10]每个元素都是指针

  1. unsigned char 跟char区别?

char能表示-128~127, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况,因此无论如何都能表示256个数字。

  1. 轮询
    polling,轮询的作用??
    http://blog.chinaunix.net/uid-20269725-id-2990009.html

  2. 编译器不检查数组越界问题
    数组空间以及存储问题
    //int arr[] = { 1,2,3,4,5,6 };
    int arr[3];
    arr[0] = 1;
    arr[1] = 2;
    arr[2] = 3;
    arr[3] = 4;
    arr[4] = 5;
    arr[5] = 6;
    printf(“%d!!!\n”, sizeof(arr) / sizeof(arr[0]));

解决:数组越界编译器不会报错

程序员的职责是保证不越界
而不是追问越界之后会发生什么

  1. 数值表示方法
    https://zhidao.baidu.com/question/29786315.html

1 逻辑判断中确定某数在某个范围内。
比如判断数c在[a,b]区间内可以写作
(a<=c) && (c <= b)

  1. C++中printf在哪个头文件里?C++中如何输出二进制?

在这个头文件中有printf

1
#include<stdio.h>

C++primer里的问题

第五版

  1. 类型int、long、long long和short的区别是什么?无符号类型和带符号类型的区别是什么?float和double的区别是什么?
    答:
  • 他们的区别是最小尺寸不同,一个int至少和一个short一样大,一个long至少和一个int一样大,一个long long至少和一个long一样大。

  • 无符号(unsigned)只能表示大于等于0的值。

  1. 说明指针和引用的主要区别

    P51 练习2.3.2

指针是变量,指针不一定在声明时赋初值,而引用则在声明时赋初值;

指针可以再次被赋值其它变量,而应用一旦绑定变量则不能再绑定其它变量;

  1. 指针赋值问题
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include<iostream>

    using std::cout;
    using std::endl;

    int main()
    {

    int a = 4;
    int change = 5;

    /*1. 常量指针*/
    //const int * b = &a;
    int *b;
    *b= 23;



    cout << *b << endl;
    cout << "************************************************" << endl;


    }

这段代码有什么错误?在WSL/VS2015下不能运行,但是在fedora环境下却又可以正常运行

答:
指针要么是在初始化的时候进行赋值,如:char *p = "hello world!";要么在之后将指针指向一个已经初始化的内存空间,因为只定义而未初始化的指针不会指向任何内存空间,是不能对指针指向的地方进行赋值的。

这就是为什么如果只定义了指针,而为初始化时要使用Xalloc或者new来申请空间。

文章目录
  1. 1. 2.6复习以及编程练习
  2. 2. C++primer里的问题